//
// Created by 李传智 on 2018/4/12.
//

#ifndef ANDSDK_IOBSERVER_H
#define ANDSDK_IOBSERVER_H

#include "VideoData.h"
#include "VideoThread.h"
#include <vector>
#include <mutex>

class IObserver : public VideoThread {

public:

    // 添加观察者 (线程安全）
    void addObserver(IObserver *observer);

    // 被观察者更新数据函数
    virtual void update(VideoData data) {};

    // 通知观察者 (线程安全）
    void notify(VideoData data);

protected:

    // 观察者列表
    std::vector<IObserver *> observers;

    // 互斥锁
    std::mutex mutex;
};


#endif //ANDSDK_IOBSERVER_H
